<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>http::basic_parser</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Beast">
<link rel="up" href="../ref.html" title="This Page Intentionally Left Blank 2/2">
<link rel="prev" href="boost__beast__http__basic_file_body__writer/writer.html" title="http::basic_file_body::writer::writer">
<link rel="next" href="boost__beast__http__basic_parser/base.html" title="http::basic_parser::base">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="boost__beast__http__basic_file_body__writer/writer.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="boost__beast__http__basic_parser/base.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="beast.ref.boost__beast__http__basic_parser"></a><a class="link" href="boost__beast__http__basic_parser.html" title="http::basic_parser">http::basic_parser</a>
</h4></div></div></div>
<p>
        A parser for decoding HTTP/1 wire format messages.
      </p>
<h5>
<a name="beast.ref.boost__beast__http__basic_parser.h0"></a>
        <span class="phrase"><a name="beast.ref.boost__beast__http__basic_parser.synopsis"></a></span><a class="link" href="boost__beast__http__basic_parser.html#beast.ref.boost__beast__http__basic_parser.synopsis">Synopsis</a>
      </h5>
<p>
        Defined in header <code class="literal">&lt;<a href="../../../../../../boost/beast/http/basic_parser.hpp" target="_top">boost/beast/http/basic_parser.hpp</a>&gt;</code>
      </p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span>
    <span class="keyword">bool</span> <span class="identifier">isRequest</span><span class="special">,</span>
    <span class="keyword">class</span> <span class="identifier">Derived</span><span class="special">&gt;</span>
<span class="keyword">class</span> <span class="identifier">basic_parser</span> <span class="special">:</span>
    <span class="keyword">private</span> <span class="identifier">basic_parser_base</span>
</pre>
<h5>
<a name="beast.ref.boost__beast__http__basic_parser.h1"></a>
        <span class="phrase"><a name="beast.ref.boost__beast__http__basic_parser.types"></a></span><a class="link" href="boost__beast__http__basic_parser.html#beast.ref.boost__beast__http__basic_parser.types">Types</a>
      </h5>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
                <p>
                  Name
                </p>
              </th>
<th>
                <p>
                  Description
                </p>
              </th>
</tr></thead>
<tbody><tr>
<td>
                <p>
                  <a class="link" href="boost__beast__http__basic_parser/is_request.html" title="http::basic_parser::is_request"><span class="bold"><strong>is_request</strong></span></a>
                </p>
              </td>
<td>
                <p>
                  true if this parser parses requests, false for responses.
                </p>
              </td>
</tr></tbody>
</table></div>
<h5>
<a name="beast.ref.boost__beast__http__basic_parser.h2"></a>
        <span class="phrase"><a name="beast.ref.boost__beast__http__basic_parser.member_functions"></a></span><a class="link" href="boost__beast__http__basic_parser.html#beast.ref.boost__beast__http__basic_parser.member_functions">Member
        Functions</a>
      </h5>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
                <p>
                  Name
                </p>
              </th>
<th>
                <p>
                  Description
                </p>
              </th>
</tr></thead>
<tbody>
<tr>
<td>
                <p>
                  <a class="link" href="boost__beast__http__basic_parser/base.html" title="http::basic_parser::base"><span class="bold"><strong>base</strong></span></a>
                </p>
              </td>
<td>
                <p>
                  Returns a reference to this object as a basic_parser.
                </p>
                <p>
                  Returns a constant reference to this object as a basic_parser.
                </p>
              </td>
</tr>
<tr>
<td>
                <p>
                  <a class="link" href="boost__beast__http__basic_parser/basic_parser.html" title="http::basic_parser::basic_parser"><span class="bold"><strong>basic_parser</strong></span></a>
                </p>
              </td>
<td>
                <p>
                  Copy constructor.
                </p>
              </td>
</tr>
<tr>
<td>
                <p>
                  <a class="link" href="boost__beast__http__basic_parser/body_limit.html" title="http::basic_parser::body_limit"><span class="bold"><strong>body_limit</strong></span></a>
                </p>
              </td>
<td>
                <p>
                  Set the limit on the payload body.
                </p>
              </td>
</tr>
<tr>
<td>
                <p>
                  <a class="link" href="boost__beast__http__basic_parser/chunked.html" title="http::basic_parser::chunked"><span class="bold"><strong>chunked</strong></span></a>
                </p>
              </td>
<td>
                <p>
                  Returns true if the last value for Transfer-Encoding is "chunked".
                </p>
              </td>
</tr>
<tr>
<td>
                <p>
                  <a class="link" href="boost__beast__http__basic_parser/content_length.html" title="http::basic_parser::content_length"><span class="bold"><strong>content_length</strong></span></a>
                </p>
              </td>
<td>
                <p>
                  Returns the optional value of Content-Length if known.
                </p>
              </td>
</tr>
<tr>
<td>
                <p>
                  <a class="link" href="boost__beast__http__basic_parser/eager.html" title="http::basic_parser::eager"><span class="bold"><strong>eager</strong></span></a>
                </p>
              </td>
<td>
                <p>
                  Returns true if the eager parse option is set.
                </p>
                <p>
                  Set the eager parse option.
                </p>
              </td>
</tr>
<tr>
<td>
                <p>
                  <a class="link" href="boost__beast__http__basic_parser/got_some.html" title="http::basic_parser::got_some"><span class="bold"><strong>got_some</strong></span></a>
                </p>
              </td>
<td>
                <p>
                  Returns true if the parser has received at least one byte of input.
                </p>
              </td>
</tr>
<tr>
<td>
                <p>
                  <a class="link" href="boost__beast__http__basic_parser/header_limit.html" title="http::basic_parser::header_limit"><span class="bold"><strong>header_limit</strong></span></a>
                </p>
              </td>
<td>
                <p>
                  Set a limit on the total size of the header.
                </p>
              </td>
</tr>
<tr>
<td>
                <p>
                  <a class="link" href="boost__beast__http__basic_parser/is_done.html" title="http::basic_parser::is_done"><span class="bold"><strong>is_done</strong></span></a>
                </p>
              </td>
<td>
                <p>
                  Returns true if the message is complete.
                </p>
              </td>
</tr>
<tr>
<td>
                <p>
                  <a class="link" href="boost__beast__http__basic_parser/is_header_done.html" title="http::basic_parser::is_header_done"><span class="bold"><strong>is_header_done</strong></span></a>
                </p>
              </td>
<td>
                <p>
                  Returns true if a the parser has produced the full header.
                </p>
              </td>
</tr>
<tr>
<td>
                <p>
                  <a class="link" href="boost__beast__http__basic_parser/keep_alive.html" title="http::basic_parser::keep_alive"><span class="bold"><strong>keep_alive</strong></span></a>
                </p>
              </td>
<td>
                <p>
                  Returns true if the message has keep-alive connection semantics.
                </p>
              </td>
</tr>
<tr>
<td>
                <p>
                  <a class="link" href="boost__beast__http__basic_parser/need_eof.html" title="http::basic_parser::need_eof"><span class="bold"><strong>need_eof</strong></span></a>
                </p>
              </td>
<td>
                <p>
                  Returns true if the message semantics require an end of file.
                </p>
              </td>
</tr>
<tr>
<td>
                <p>
                  <a class="link" href="boost__beast__http__basic_parser/operator_eq_.html" title="http::basic_parser::operator="><span class="bold"><strong>operator=</strong></span></a>
                </p>
              </td>
<td>
                <p>
                  Copy assignment.
                </p>
              </td>
</tr>
<tr>
<td>
                <p>
                  <a class="link" href="boost__beast__http__basic_parser/put.html" title="http::basic_parser::put"><span class="bold"><strong>put</strong></span></a>
                </p>
              </td>
<td>
                <p>
                  Write a buffer sequence to the parser.
                </p>
              </td>
</tr>
<tr>
<td>
                <p>
                  <a class="link" href="boost__beast__http__basic_parser/put_eof.html" title="http::basic_parser::put_eof"><span class="bold"><strong>put_eof</strong></span></a>
                </p>
              </td>
<td>
                <p>
                  Inform the parser that the end of stream was reached.
                </p>
              </td>
</tr>
<tr>
<td>
                <p>
                  <a class="link" href="boost__beast__http__basic_parser/skip.html" title="http::basic_parser::skip"><span class="bold"><strong>skip</strong></span></a>
                </p>
              </td>
<td>
                <p>
                  Returns true if the skip parse option is set.
                </p>
                <p>
                  Set the skip parse option.
                </p>
              </td>
</tr>
<tr>
<td>
                <p>
                  <a class="link" href="boost__beast__http__basic_parser/upgrade.html" title="http::basic_parser::upgrade"><span class="bold"><strong>upgrade</strong></span></a>
                </p>
              </td>
<td>
                <p>
                  Returns true if the message is an upgrade message.
                </p>
              </td>
</tr>
<tr>
<td>
                <p>
                  <a class="link" href="boost__beast__http__basic_parser/basic_parser_dtor_.html" title="http::basic_parser::~basic_parser"><span class="bold"><strong>~basic_parser</strong></span></a>
                </p>
              </td>
<td>
                <p>
                  Destructor.
                </p>
              </td>
</tr>
</tbody>
</table></div>
<h5>
<a name="beast.ref.boost__beast__http__basic_parser.h3"></a>
        <span class="phrase"><a name="beast.ref.boost__beast__http__basic_parser.protected_member_functions"></a></span><a class="link" href="boost__beast__http__basic_parser.html#beast.ref.boost__beast__http__basic_parser.protected_member_functions">Protected
        Member Functions</a>
      </h5>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
                <p>
                  Name
                </p>
              </th>
<th>
                <p>
                  Description
                </p>
              </th>
</tr></thead>
<tbody>
<tr>
<td>
                <p>
                  <a class="link" href="boost__beast__http__basic_parser/basic_parser.html" title="http::basic_parser::basic_parser"><span class="bold"><strong>basic_parser</strong></span></a>
                </p>
              </td>
<td>
                <p>
                  Default constructor.
                </p>
                <p>
                  Move constructor.
                </p>
              </td>
</tr>
<tr>
<td>
                <p>
                  <a class="link" href="boost__beast__http__basic_parser/operator_eq_.html" title="http::basic_parser::operator="><span class="bold"><strong>operator=</strong></span></a>
                </p>
              </td>
<td>
                <p>
                  Move assignment.
                </p>
              </td>
</tr>
</tbody>
</table></div>
<h5>
<a name="beast.ref.boost__beast__http__basic_parser.h4"></a>
        <span class="phrase"><a name="beast.ref.boost__beast__http__basic_parser.description"></a></span><a class="link" href="boost__beast__http__basic_parser.html#beast.ref.boost__beast__http__basic_parser.description">Description</a>
      </h5>
<p>
        This parser is designed to efficiently parse messages in the HTTP/1 wire
        format. It allocates no memory when input is presented as a single contiguous
        buffer, and uses minimal state. It will handle chunked encoding and it understands
        the semantics of the Connection, Content-Length, and Upgrade fields. The
        parser is optimized for the case where the input buffer sequence consists
        of a single contiguous buffer. The <a class="link" href="boost__beast__flat_buffer.html" title="flat_buffer"><code class="computeroutput"><span class="identifier">flat_buffer</span></code></a> class is provided, which
        guarantees that the input sequence of the stream buffer will be represented
        by exactly one contiguous buffer. To ensure the optimum performance of the
        parser, use <a class="link" href="boost__beast__flat_buffer.html" title="flat_buffer"><code class="computeroutput"><span class="identifier">flat_buffer</span></code></a> with HTTP algorithms
        such as <a class="link" href="boost__beast__http__read.html" title="http::read"><code class="computeroutput"><span class="identifier">http</span><span class="special">::</span><span class="identifier">read</span></code></a>, <a class="link" href="boost__beast__http__read_some.html" title="http::read_some"><code class="computeroutput"><span class="identifier">http</span><span class="special">::</span><span class="identifier">read_some</span></code></a>, <a class="link" href="boost__beast__http__async_read.html" title="http::async_read"><code class="computeroutput"><span class="identifier">http</span><span class="special">::</span><span class="identifier">async_read</span></code></a>, and <a class="link" href="boost__beast__http__async_read_some.html" title="http::async_read_some"><code class="computeroutput"><span class="identifier">http</span><span class="special">::</span><span class="identifier">async_read_some</span></code></a>. Alternatively,
        the caller may use custom techniques to ensure that the structured portion
        of the HTTP message (header or chunk header) is contained in a linear buffer.
      </p>
<p>
        The interface uses CRTP (Curiously Recurring Template Pattern). To use this
        class directly, derive from <a class="link" href="boost__beast__http__basic_parser.html" title="http::basic_parser"><code class="computeroutput"><span class="identifier">http</span><span class="special">::</span><span class="identifier">basic_parser</span></code></a>. When bytes are presented,
        the implementation will make a series of zero or more calls to derived class
        members functions (termed "callbacks" in this context) matching
        a specific signature.
      </p>
<p>
        Every callback must be provided by the derived class, or else a compilation
        error will be generated. This exemplar shows the signature and description
        of the callbacks required in the derived class. For each callback, the function
        will ensure that <code class="computeroutput"><span class="special">!</span><span class="identifier">ec</span></code>
        is <code class="computeroutput"><span class="keyword">true</span></code> if there was no error
        or set to the appropriate error code if there was one. If an error is set,
        the value is propagated to the caller of the parser.
      </p>
<h5>
<a name="beast.ref.boost__beast__http__basic_parser.h5"></a>
        <span class="phrase"><a name="beast.ref.boost__beast__http__basic_parser.derived_class_requirements"></a></span><a class="link" href="boost__beast__http__basic_parser.html#beast.ref.boost__beast__http__basic_parser.derived_class_requirements">Derived
        Class Requirements</a>
      </h5>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">bool</span> <span class="identifier">isRequest</span><span class="special">&gt;</span>
<span class="keyword">class</span> <span class="identifier">derived</span>
    <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">basic_parser</span><span class="special">&lt;</span><span class="identifier">isRequest</span><span class="special">,</span> <span class="identifier">derived</span><span class="special">&lt;</span><span class="identifier">isRequest</span><span class="special">&gt;&gt;</span>
<span class="special">{</span>
<span class="keyword">private</span><span class="special">:</span>
    <span class="comment">// The friend declaration is needed,</span>
    <span class="comment">// otherwise the callbacks must be made public.</span>
    <span class="keyword">friend</span> <span class="keyword">class</span> <span class="identifier">basic_parser</span><span class="special">&lt;</span><span class="identifier">isRequest</span><span class="special">,</span> <span class="identifier">derived</span><span class="special">&gt;;</span>

    <span class="keyword">void</span>
    <span class="identifier">on_request_impl</span><span class="special">(</span>
        <span class="identifier">verb</span> <span class="identifier">method</span><span class="special">,</span>                <span class="comment">// The method verb, verb::unknown if no match</span>
        <span class="identifier">string_view</span> <span class="identifier">method_str</span><span class="special">,</span>     <span class="comment">// The method as a string</span>
        <span class="identifier">string_view</span> <span class="identifier">target</span><span class="special">,</span>         <span class="comment">// The request-target</span>
        <span class="keyword">int</span> <span class="identifier">version</span><span class="special">,</span>                <span class="comment">// The HTTP-version</span>
        <span class="identifier">error_code</span><span class="special">&amp;</span> <span class="identifier">ec</span><span class="special">);</span>            <span class="comment">// The error returned to the caller, if any</span>

    <span class="keyword">void</span>
    <span class="identifier">on_response_impl</span><span class="special">(</span>
        <span class="keyword">int</span> <span class="identifier">code</span><span class="special">,</span>                   <span class="comment">// The status-code</span>
        <span class="identifier">string_view</span> <span class="identifier">reason</span><span class="special">,</span>         <span class="comment">// The obsolete reason-phrase</span>
        <span class="keyword">int</span> <span class="identifier">version</span><span class="special">,</span>                <span class="comment">// The HTTP-version</span>
        <span class="identifier">error_code</span><span class="special">&amp;</span> <span class="identifier">ec</span><span class="special">);</span>            <span class="comment">// The error returned to the caller, if any</span>

    <span class="keyword">void</span>
    <span class="identifier">on_field_impl</span><span class="special">(</span>
        <span class="identifier">field</span> <span class="identifier">f</span><span class="special">,</span>                    <span class="comment">// The known-field enumeration constant</span>
        <span class="identifier">string_view</span> <span class="identifier">name</span><span class="special">,</span>           <span class="comment">// The field name string.</span>
        <span class="identifier">string_view</span> <span class="identifier">value</span><span class="special">,</span>          <span class="comment">// The field value</span>
        <span class="identifier">error_code</span><span class="special">&amp;</span> <span class="identifier">ec</span><span class="special">);</span>            <span class="comment">// The error returned to the caller, if any</span>

    <span class="keyword">void</span>
    <span class="identifier">on_header_impl</span><span class="special">(</span>
        <span class="identifier">error_code</span><span class="special">&amp;</span> <span class="identifier">ec</span><span class="special">);</span>            <span class="comment">// The error returned to the caller, if any</span>

    <span class="keyword">void</span>
    <span class="identifier">on_body_init_impl</span><span class="special">(</span>
        <span class="identifier">boost</span><span class="special">::</span><span class="identifier">optional</span><span class="special">&lt;</span>
            <span class="identifier">std</span><span class="special">::</span><span class="identifier">uint64_t</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span>
                <span class="identifier">content_length</span><span class="special">,</span>     <span class="comment">// Content length if known, else `boost::none`</span>
        <span class="identifier">error_code</span><span class="special">&amp;</span> <span class="identifier">ec</span><span class="special">);</span>            <span class="comment">// The error returned to the caller, if any</span>

    <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span>
    <span class="identifier">on_body_impl</span><span class="special">(</span>
        <span class="identifier">string_view</span> <span class="identifier">s</span><span class="special">,</span>              <span class="comment">// A portion of the body</span>
        <span class="identifier">error_code</span><span class="special">&amp;</span> <span class="identifier">ec</span><span class="special">);</span>            <span class="comment">// The error returned to the caller, if any</span>

    <span class="keyword">void</span>
    <span class="identifier">on_chunk_header_impl</span><span class="special">(</span>
        <span class="identifier">std</span><span class="special">::</span><span class="identifier">uint64_t</span> <span class="identifier">size</span><span class="special">,</span>         <span class="comment">// The size of the upcoming chunk,</span>
                                    <span class="comment">// or zero for the last chunk</span>
        <span class="identifier">string_view</span> <span class="identifier">extension</span><span class="special">,</span>      <span class="comment">// The chunk extensions (may be empty)</span>
        <span class="identifier">error_code</span><span class="special">&amp;</span> <span class="identifier">ec</span><span class="special">);</span>            <span class="comment">// The error returned to the caller, if any</span>

    <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span>
    <span class="identifier">on_chunk_body_impl</span><span class="special">(</span>
        <span class="identifier">std</span><span class="special">::</span><span class="identifier">uint64_t</span> <span class="identifier">remain</span><span class="special">,</span>       <span class="comment">// The number of bytes remaining in the chunk,</span>
                                    <span class="comment">// including what is being passed here.</span>
                                    <span class="comment">// or zero for the last chunk</span>
        <span class="identifier">string_view</span> <span class="identifier">body</span><span class="special">,</span>           <span class="comment">// The next piece of the chunk body</span>
        <span class="identifier">error_code</span><span class="special">&amp;</span> <span class="identifier">ec</span><span class="special">);</span>            <span class="comment">// The error returned to the caller, if any</span>

    <span class="keyword">void</span>
    <span class="identifier">on_finish_impl</span><span class="special">(</span><span class="identifier">error_code</span><span class="special">&amp;</span> <span class="identifier">ec</span><span class="special">);</span>

<span class="keyword">public</span><span class="special">:</span>
    <span class="identifier">derived</span><span class="special">()</span> <span class="special">=</span> <span class="keyword">default</span><span class="special">;</span>
<span class="special">};</span>
</pre>
<h5>
<a name="beast.ref.boost__beast__http__basic_parser.h6"></a>
        <span class="phrase"><a name="beast.ref.boost__beast__http__basic_parser.template_parameters"></a></span><a class="link" href="boost__beast__http__basic_parser.html#beast.ref.boost__beast__http__basic_parser.template_parameters">Template
        Parameters</a>
      </h5>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
                <p>
                  Type
                </p>
              </th>
<th>
                <p>
                  Description
                </p>
              </th>
</tr></thead>
<tbody>
<tr>
<td>
                <p>
                  <code class="computeroutput"><span class="identifier">isRequest</span></code>
                </p>
              </td>
<td>
                <p>
                  A <code class="computeroutput"><span class="keyword">bool</span></code> indicating
                  whether the parser will be presented with request or response message.
                </p>
              </td>
</tr>
<tr>
<td>
                <p>
                  <code class="computeroutput"><span class="identifier">Derived</span></code>
                </p>
              </td>
<td>
                <p>
                  The derived class type. This is part of the Curiously Recurring
                  Template Pattern interface.
                </p>
              </td>
</tr>
</tbody>
</table></div>
<h5>
<a name="beast.ref.boost__beast__http__basic_parser.h7"></a>
        <span class="phrase"><a name="beast.ref.boost__beast__http__basic_parser.remarks"></a></span><a class="link" href="boost__beast__http__basic_parser.html#beast.ref.boost__beast__http__basic_parser.remarks">Remarks</a>
      </h5>
<p>
        If the parser encounters a field value with obs-fold longer than 4 kilobytes
        in length, an error is generated.
      </p>
<p>
        Convenience header <code class="literal">&lt;<a href="../../../../../../boost/beast/http.hpp" target="_top">boost/beast/http.hpp</a>&gt;</code>
      </p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2016, 2017 Vinnie Falco<p>
        Distributed under the Boost Software License, Version 1.0. (See accompanying
        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
      </p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="boost__beast__http__basic_file_body__writer/writer.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="boost__beast__http__basic_parser/base.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
